﻿#define _CRT_SECURE_NO_WARNINGS
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
//【初阶篇】39.分支和循环do-while循环练练习（续）+函数


#include<stdio.h>
#include <stdlib.h>
int main()
{
//39.1 goto 语句	
	//示例一个关机程序
	//1.电脑运行后1分钟内关机
	//2.如果输入：不要关机，就取消关机。
	//windows中关机命令 shutdown -s -t 60(-s 关机 -t设置倒计时)   / shutdowm -a（-a取消关机）
	char input[20] = {0};
	system("shutdown -s -t 120");
	//【goto】版本      //设置一个标记 again:,可以通过goto回到标记符继续运行，但goto尽量少用，容易引起一些不必要的bug
	again:
	printf("注意，你的电脑即将在120秒后关机，如果输入：不要关机，就会取消关机\n输入栏：");
	scanf("%s", input);
	if (strcmp(input, "不要关机") == 0)
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	//----------
	
	//【do...while】版本 //同样可以实现，所以goto应该用在适合它出现的地方不要随意使用
	/*
	do
	{
		printf("注意，你的电脑即将在120秒后关机，如果输入：不要关机，就会取消关机\n输入栏：");
		scanf("%s", input);
		if (strcmp(input, "不要关机") == 0)
		{
			system("shutdown -a");
			break;
		}
	} while (1);
	*/
	//----------
	
	//************************************************************************//
	//****Debuge是调试版本，用于程序调试|Release是发布版本，发布给用户使用****//
	//*****通过运行Release版本生成的 .exe文件更适合以程序形式分享给其他人*****//
	//************************************************************************//

//----------------------

	return 0;
}

//39.分支和循环do-while循环练练习（续）+函数
	// goto语句：可以跳转到设置的标签，但不可以跨函数跳转，
	// goto的主要应用场景是用于跳出多层嵌套的深度循环中，
	// 可以通过在循环外设置标签一次性跳出全部循环
